home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / games.arc / ROTATE.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  2.6 KB  |  77 lines

  1. 100  '*****************************************************************
  2. 110  '**      ROTATE FONT     **  ROTATES AND STORES IN CHR$(128)    **
  3. 120  '**                      **  THRU CHR$(255) THE PATTERNS OF THE **
  4. 130  '**      VERSION 1.1     **  CHARACTERS FOR CHR$(0) THRU        **
  5. 140  '**                      **  CHR$(127).  TO USE - ADD 128 TO    **
  6. 150  '**      JUNE 6,1982     **  THE VALUE OF THE ASCII CHARACTER   **
  7. 160  '*****************************************************************
  8. 170  '
  9. 180  SCREEN 2 : KEY OFF : CLS
  10. 190  CLEAR ,20000,1000
  11. 200  DEF SEG = &HB800
  12. 210  '
  13. 220  '*********************************************************************
  14. 230  '**  THIS ROUTINE STORES A ROTATED VERSION OF CHR$ (0 THRU 127)     **
  15. 240  '**  IN CHR$ (128 THRU 255)                                         **
  16. 250  '*********************************************************************
  17. 260  '
  18. 270  FOR X = 0 TO 127
  19. 280  PRINT X;
  20. 290  DEF SEG = &HFF00         'POINT TO CHARACTER PATTERN IN ROM AT &HFFA6E
  21. 300  POINTER = &HA6E + X*8    'POINT TO START OF INDIVIDUAL PATTERN
  22. 310  FOR Y = 0 TO 7           'FOR 8 BYTES
  23. 320  A(Y+1) = PEEK(POINTER+Y) 'GET PATTERN
  24. 330  NEXT Y                   'AND STORE IN A(Y+1)
  25. 340  '
  26. 350  GOSUB 510                'ROTATE PATTERN 90 DEGREES
  27. 360  '
  28. 370  DEF SEG = 0
  29. 380  POKE &H7D,&HBC
  30. 390  '
  31. 400  FOR Y = 0 TO 7
  32. 410  POKE &HBC00+X*8+Y,B(Y+1)
  33. 420  NEXT Y
  34. 430  '
  35. 440  NEXT X
  36. 450  '
  37. 460  DEF SEG = 0
  38. 470  POKE &H7D,&HBC
  39. 480  CLS : FOR X = 0 TO 255 : PRINT CHR$(X);" "; : NEXT
  40. 490  PRINT
  41. 500  INPUT " PRESS ENTER FOR A DRIVER FOR THE GRAPHICS ";A$ : GOTO 720
  42. 510  '
  43. 520  '*********************************************************************
  44. 530  '**  THIS SUBROUTINE TAKES AN 8 BYTE PATTERN AND ROTATES IT 90 DEG  **
  45. 540  '**  INPUT IN A(1) TO A(8)                OUTPUT IN B(1) THRU B(8)  **
  46. 550  '*********************************************************************
  47. 560  '
  48. 570  FOR C = 1 TO 8 : B(C) = 0 : NEXT C
  49. 580  '
  50. 590  FOR C = 1 TO 8
  51. 600  A = A(C)
  52. 610  '
  53. 620  FOR D = 8 TO 1 STEP -1
  54. 630  A = A + A
  55. 640  B(D) = B(D) * 2
  56. 650  IF A > 255 THEN B(D) = B(D) + 1
  57. 660  A = A MOD 256
  58. 670  NEXT D
  59. 680  '
  60. 690  NEXT C
  61. 700  '
  62. 710  RETURN
  63. 720  '
  64. 730  '*********************************************************************
  65. 740  '**  THIS ROUTINE IS A SIMPLE DRIVER SO YOU CAN PRINT OUT MESSAGES  **
  66. 750  '**  WITH THIS PROGRAM WITH THE LINES GOING UP THE PAGE             **
  67. 760  '*********************************************************************
  68. 770  '
  69. 780  CLS : SCREEN 1 : X = 24 : Y = 1
  70. 790  LOCATE X,Y : PRINT CHR$(128+45) ;
  71. 800  A$ = INKEY$ : IF A$ = "" THEN 800
  72. 810  B = ASC(A$) + 128
  73. 820  LOCATE X,Y : PRINT CHR$(B);
  74. 830  X = X-1 : IF X = 0 THEN X = 24 : Y = Y + 2
  75. 840  IF Y > 40 THEN GOTO 840
  76. 850  GOTO 790
  77.